from datetime import datetime, timezone
from app.extensions import db

class Category(db.Model):
    __tablename__ = 'categories'
    id = db.Column(db.BigInteger, primary_key=True, autoincrement=True, comment='分类ID')
    # 移除user_id字段（分类为系统固定，不关联用户）
    type = db.Column(db.Enum('expense', 'income'), nullable=False, comment='类型（支出/收入）')
    name = db.Column(db.String(50), nullable=False, comment='分类名称')
    icon = db.Column(db.String(100), default='fas fa-question', comment='图标样式') 
    # 移除is_quick字段
    sort_order = db.Column(db.Integer, default=0, comment='排序序号（数字越小越靠前）')  
    created_at = db.Column(db.DateTime, default=lambda: datetime.now(timezone.utc), comment='创建时间')  
    updated_at = db.Column(db.DateTime, default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc), comment='更新时间')  

    # 关联关系（仅保留与交易的关联）
    transactions = db.relationship('Transaction', back_populates='category', lazy=True)  # 关联收支记录

    # 约束：同一类型下分类名称唯一（移除用户维度）
    __table_args__ = (
        db.UniqueConstraint('type', 'name', name='unique_type_name'),
    )